/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.yonsei.iwb.smarttv.result;

import com.hp.hpl.jena.rdf.model.Resource;
import java.util.LinkedHashMap;

/**
 * 사용자의 질의에 대해 개체 식별의 결과를 질의어와 결과의 쌍으로 저장하기 위한 클래스
 *
 * @author Onlyjiny
 */
public class NamedEntityLinkedHashMap extends LinkedHashMap<String, NamedEntitySet> {

    public boolean putEntity(String key, Resource value) {
        NamedEntitySet nes;
        if (this.containsKey(key)) {
            nes = this.get(key);
        } else {
            // 이미 매칭된 문자열을 포함한 결과에 대한 처리
            // 하위 문자열로써 동일한 경우에 대한 고려가 필요할 경우 수정요

            Object[] keys = this.keySet().toArray();
            for (int i = 0; i < keys.length; i++) {
                if (keys[i].toString().contains(key)) {
                    return false;
                }
            }
            nes = new NamedEntitySet();
        }
        NamedEntity ne = new NamedEntity(value);
        nes.add(ne);
        this.put(key, nes);
        return true;
    }

    @Override
    public String toString() {
        StringBuffer sb = new StringBuffer();
        sb.append("::::: NER Result\n");
        Object[] keys = this.keySet().toArray();
        for (int i = 0; i < keys.length; i++) {
            String s = keys[i].toString();
            sb.append("Keyword: " + s + "\n");
            sb.append(this.get(s).toString());
        }
        return sb.toString();
    }
}
